<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="chrome=1">
  
  <title>使用SourceTree和GitHub共同开发 - duger | Duger 博客</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  
    <meta name="author" content="Duger wang">
  
  
    <meta name="description" content="GitHub详细教程
&amp;nbsp;
&amp;nbsp;
1&amp;nbsp;Git详细教程
&amp;nbsp;
1.1&amp;nbsp;Git简介
&amp;nbsp;
1.1.1&amp;nbsp;Git是何方神圣?
&amp;nbsp;
Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录，并能回滚文件集合到另一个状态（历史记录状态）。另一个状态可以是不同的文件，也可以是不同的文件内容。举个例子，你可以将文件集">
  
  <meta name="description" content="GitHub详细教程
&nbsp;
&nbsp;
1&nbsp;Git详细教程
&nbsp;
1.1&nbsp;Git简介
&nbsp;
1.1.1&nbsp;Git是何方神圣?
&nbsp;
Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录，并能回滚文件集合到另一个状态（历史记录状态）。另一个状态可以是不同的文件，也可以是不同的文件内容。举个例子，你可以将文件集">
<meta property="og:type" content="article">
<meta property="og:title" content="使用SourceTree和GitHub共同开发 - duger">
<meta property="og:url" content="http://www.autonavi.me/2014/01/21/使用SourceTree和GitHub共同开发---duger.html">
<meta property="og:site_name" content="Duger 博客">
<meta property="og:description" content="GitHub详细教程
&nbsp;
&nbsp;
1&nbsp;Git详细教程
&nbsp;
1.1&nbsp;Git简介
&nbsp;
1.1.1&nbsp;Git是何方神圣?
&nbsp;
Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录，并能回滚文件集合到另一个状态（历史记录状态）。另一个状态可以是不同的文件，也可以是不同的文件内容。举个例子，你可以将文件集">
<meta property="og:image" content="webkit-fake-url://4E7B7AFF-CB51-47FC-9F4D-33B81868BB1F/image.tiff">
<meta property="og:image" content="webkit-fake-url://573A3325-F19F-4ED9-989B-992E1293A0D4/image.tiff">
<meta property="og:image" content="webkit-fake-url://313E10D2-3405-4169-BA5F-388FBDABA39E/image.tiff">
<meta property="og:image" content="webkit-fake-url://9B96EEF3-E9D8-4E82-8DA5-88ADA19BF99C/image.tiff">
<meta property="og:image" content="webkit-fake-url://F9A1CDA9-375B-49C9-97A8-8869ACC1577F/image.tiff">
<meta property="og:image" content="webkit-fake-url://3D5A6A5F-B64E-4A17-89FB-DCAC649FEE05/image.tiff">
<meta property="og:image" content="webkit-fake-url://B99D9AE0-D4B6-4B39-808F-586C26B4DEE3/image.tiff">
<meta property="og:image" content="webkit-fake-url://381B2A89-CC05-4E3F-AF58-2AA19F6EC68F/image.tiff">
<meta property="og:image" content="webkit-fake-url://98922CF5-63F4-4286-A390-1FC2A71DD7D4/image.tiff">
<meta property="og:image" content="webkit-fake-url://6D63622A-2FEF-40C5-AE15-1C6A3B67B7B3/image.tiff">
<meta property="og:image" content="webkit-fake-url://B231F988-E6A0-442E-998C-A77B512FE840/image.tiff">
<meta property="og:image" content="webkit-fake-url://2B49FFFF-6278-437C-897B-DDA9F9224C8D/image.tiff">
<meta property="og:image" content="webkit-fake-url://5B63F70D-7AA9-4D23-87FE-D73163DFCA4A/image.tiff">
<meta property="og:image" content="webkit-fake-url://E72CB933-BF39-4B1C-BB84-6BD950C1484F/image.tiff">
<meta property="og:image" content="webkit-fake-url://3EDC009B-E4BA-41D6-8BBB-24DBE69D5C01/image.tiff">
<meta property="og:image" content="webkit-fake-url://162FE251-B8FA-47E6-875C-DA74CEC6A6BA/image.tiff">
<meta property="og:image" content="webkit-fake-url://6AD108DF-F309-4E13-B305-4B0B6335C45D/image.tiff">
<meta property="og:image" content="webkit-fake-url://BF5674A0-98F6-43A2-B32B-B51E745CA2F4/image.tiff">
<meta property="og:image" content="webkit-fake-url://9430373C-3AA0-40F2-AD3C-1DF42701369A/image.tiff">
<meta property="og:image" content="webkit-fake-url://4290AFE6-1E22-4E8D-B9F5-EB26E5F03780/image.tiff">
<meta property="og:image" content="webkit-fake-url://1BF91582-68F1-41FF-B1D6-92FED18638DA/image.tiff">
<meta property="og:image" content="webkit-fake-url://71DAA4FC-359E-4FDB-9A71-A7CC556B49E7/image.tiff">
<meta property="og:image" content="webkit-fake-url://007E1B0A-131E-43EA-843F-15862518A1F3/image.tiff">
<meta property="og:image" content="webkit-fake-url://26242A6C-EF1B-47E5-9B7D-226E4AA7086B/image.tiff">
<meta property="og:image" content="webkit-fake-url://C0D4C6C7-6643-4B08-A953-03FD6C3FE310/image.tiff">
<meta property="og:image" content="webkit-fake-url://33F52041-539E-4B1D-A0AA-2EA83B5997F3/image.tiff">
<meta property="og:image" content="webkit-fake-url://1BD436FC-AE55-4EC9-9635-61844CB6B3CA/image.tiff">
<meta property="og:image" content="webkit-fake-url://E44D6FFF-4549-46B2-980C-110B9D348C3B/image.tiff">
<meta property="og:image" content="webkit-fake-url://4757F9BB-D6F6-4DA2-90CC-4E8D0EE8A744/image.tiff">
<meta property="og:image" content="webkit-fake-url://4E9F7DC4-7A54-4384-ADD4-94CBE68B59AD/image.tiff">
<meta property="og:image" content="webkit-fake-url://E2F35A47-0430-411B-879B-F66C57556C6D/image.tiff">
<meta property="og:image" content="webkit-fake-url://2C8570F0-027C-47B6-8745-D8E870F844E3/image.tiff">
<meta property="og:image" content="http://counter.cnblogs.com/blog/rss/3496495">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="使用SourceTree和GitHub共同开发 - duger">
<meta name="twitter:description" content="GitHub详细教程
&nbsp;
&nbsp;
1&nbsp;Git详细教程
&nbsp;
1.1&nbsp;Git简介
&nbsp;
1.1.1&nbsp;Git是何方神圣?
&nbsp;
Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录，并能回滚文件集合到另一个状态（历史记录状态）。另一个状态可以是不同的文件，也可以是不同的文件内容。举个例子，你可以将文件集">

  
  
    <link rel="icon" type="image/x-icon" href="/images/favicon.ico">
  
  <link rel="stylesheet" href="/css/style.css" type="text/css">

  <!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
  
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-49504269-3']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
</script>

</head>

<body>
  <div class="wrapper">
    <header id="header">
  <div class="title">
    <h1><a href="/">Duger 博客</a></h1>
    <p><a href="/">iOS小生</a></p>
  </div>
  <nav class="nav">
    <ul>
      
        <li><a href="/">Home</a></li>
      
        <li><a href="/archives">Archives</a></li>
      
        <li><a href="/about">About</a></li>
      
        <li><a href="/atom.xml">RSS</a></li>
      
      
    </ul>
    <div class="clearfix"></div>
  </nav>
  <div class="clearfix"></div>
</header>
    <div class="content"><article class="post">
  <header>
    
      <div class="icon"></div>
      <a href="/2014/01/21/使用SourceTree和GitHub共同开发---duger.html">
  <time datetime="2014-01-21T15:10:00.000Z">
    2014年 1月 21日
  </time>
</a>
    
    
  
    <h1 class="title">使用SourceTree和GitHub共同开发 - duger</h1>
  

  </header>
  
  <div class="entry">
    
      <p><span><strong>GitHub详细教程</strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span><strong>1&nbsp;Git详细教程</strong></span></p>
<p>&nbsp;</p>
<p><span><strong>1.1&nbsp;Git简介</strong></span></p>
<p>&nbsp;</p>
<p><span><strong>1.1.1&nbsp;Git是何方神圣?</strong></span></p>
<p>&nbsp;</p>
<p><span>Git是用C语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录，并能回滚文件集合到另一个状态（历史记录状态）。另一个状态可以是不同的文件，也可以是不同的文件内容。举个例子，你可以将文件集合转换到两天之前的状态，或者你可以在生产代码和实验性质的代码之间进行切换。文件集合往往被称作是&ldquo;源代码&rdquo;。在一个分布版本控制系统中，每个人都有一份完整的源代码（包括源代码所有的历史记录信息），而且可以对这个本地的数据进行操作。分布版本控制系统不需要一个集中式的代码仓库。</span></p>
<p>&nbsp;</p>
<p><span>当你对本地的源代码进行了修改，你可以标注他们跟下一个版本相关（将他们加到index中），然后提交到仓库中来（commit）。Git保存了所有的版本信息，所以你可以转换你的源代码到任何的历史版本。你可以对本地的仓库进行代码的提交，然后与其他的仓库进行同步。你可以使用Git来进行仓库的克隆（clone）操作，完整的复制一个已有的仓库。仓库的所有者可以通过push操作（推送变更到别处的仓库）或者Pull操作（从别处的仓库拉取变更）来同步变更。</span><br><a id="more"></a><br>&nbsp;</p>
<p><span>Git支持分支功能（branch）。如果你想开发一个新的产品功能，你可以建立一个分支，对这个分支的进行修改，而不至于会影响到主支上的代码。</span></p>
<p>&nbsp;</p>
<p><span>Git提供了命令行工具；这个教程会使用命令行。你也可以找到图形工具，譬如与Eclipse配套的EGit工具，但是这些都不会在这个教程中进行描述。</span></p>
<p>&nbsp;</p>
<p><span><strong>1.1.2&nbsp;重要的术语</strong></span></p>
<p>&nbsp;</p>
<p><span>Git 术语</span></p>
<p><span><strong>术语</strong></span></p>
<p><span><strong>定义</strong></span></p>
<p>&nbsp;</p>
<p><span><strong>仓库</strong></span></p>
<p><span>一个仓库包括了所有的版本信息、所有的分支和标记信息.</span></p>
<p><span><strong>Repository</strong></span></p>
<p><span>在Git中仓库的每份拷贝都是完整的。仓库让你可以从中</span></p>
<p><span>&nbsp;</span></p>
<p><span>取得你的工作副本。</span></p>
<p><span>&nbsp;</span></p>
<p><span>一个分支意味着一个独立的、拥有自己历史信息的代码线</span></p>
<p><span><strong>分支</strong></span></p>
<p><span>（code line）。你可以从已有的代码中生成一个新的分支</span></p>
<p><span>Branches</span></p>
<p><span>，这个分支与剩余的分支完全独立。默认的分支往往是叫</span></p>
<p><span>&nbsp;</span></p>
<p><span>master。用户可以选择一个分支，选择一个分支叫做</span></p>
<p><span>&nbsp;</span></p>
<p><span><strong>checkout</strong>.</span></p>
<p><span>标记</span></p>
<p><span>一个标记指的是某个分支某个特定时间点的状态。通过标</span></p>
<p><span>Tags</span></p>
<p><span>记，可以很方便的切换到标记时的状态，例如2009年1月25</span></p>
<p><span>&nbsp;</span></p>
<p><span>号在testing分支上的代码状态</span></p>
<p><span><strong>提交</strong></span></p>
<p><span>提交代码后，仓库会创建一个新的版本。这个版本可以在</span></p>
<p><span>Commit</span></p>
<p><span>后续被重新获得。每次提交都包括作者和提交者，作者和</span></p>
<p><span>&nbsp;</span></p>
<p><span>提交者可以是不同的人</span></p>
<p><span>URL</span></p>
<p><span>URl用来标识一个仓库的位置</span></p>
<p><span>&nbsp;</span></p>
<p><span>用来表示代码的一个版本状态。Git通过用SHA1 hash算法</span></p>
<p><span>修订</span></p>
<p><span>表示的id来标识不同的版本。每一个 SHA1 id都是160位长</span></p>
<p><span>Revision</span></p>
<p><span>,16进制标识的字符串.最新的版本可以通过HEAD来获取.</span></p>
<p><span>&nbsp;</span></p>
<p><span>之前的版本可以通过”HEAD~1”来获取，以此类推。</span></p>
<p>&nbsp;</p>
<p><span><strong>1.1.3&nbsp;索引</strong></span></p>
<p>&nbsp;</p>
<p><span>Git 需要将代码的变化显示的与下一次提交进行关联。举个例子，如果你对一个文件继续了修改，然后想将这些修改提交到下一次提交中，你必须将这个文件提交到索引中，通过git add file命令。这样索引可以保存所有变化的快照。</span></p>
<p>&nbsp;</p>
<p><span>新增的文件总是要显示的添加到索引中来。对于那些之前已经提交过的文件，可以在commit命令中使用-a 选项达到提交到索引的目的。</span></p>
<p>&nbsp;</p>
<p><span><strong>1.2&nbsp;Git 安装 配置</strong></span></p>
<p>&nbsp;</p>
<p><span>我们使用SourceTree这个软件，他将Git已经配置好了，我们只需要用就可以了。</span></p>
<p>&nbsp;</p>
<p><span><strong>1.3&nbsp;开始操作Git</strong></span></p>
<p><span>后续将通过一个典型的Git工作流来学习。在这个过程中，你会使用SourceTree创建一些文件、创建一个本地的Git仓库、提交你的文件到这个仓库中。这之后，你会克隆一个仓库、在仓库之间通过pull和push操作来交换代码的修改。</span></p>
<p><span><strong>1.3.1&nbsp;创建仓库、添加文件和提交更改</strong></span></p>
<p><span>每个Git仓库都是放置在.git文件夹下.这个目录包含了仓库的所有历史记录，.git/config文件包含了仓库的本地配置。</span></p>
<p><span>以下我们会创建一个本地Git工程仓库。</span></p>
<p><span>Xcode自带有Git管理，在创建工程时，勾选Source Control即可。</span></p>
<p><span><img src="webkit-fake-url://4E7B7AFF-CB51-47FC-9F4D-33B81868BB1F/image.tiff" alt=""></span></p>
<p><span>此工程将自带git配置，但是由于Xcode 在git管理上优化有问题，会让电脑出现卡顿，所以我们不建议用Xcode管理git仓库。</span></p>
<p><span>我们一般采用的方式是，用Xcode建立好工程之后，再运行终端，将此工程变为Git仓库，使用git init命令：</span></p>
<p><span><img src="webkit-fake-url://573A3325-F19F-4ED9-989B-992E1293A0D4/image.tiff" alt=""></span></p>
<p><span>然后，我们将此工程添加入SourceTree进行管理。</span></p>
<p><span><img src="webkit-fake-url://313E10D2-3405-4169-BA5F-388FBDABA39E/image.tiff" alt=""></span></p>
<p><span>一个本地工程已经添加进来了。</span></p>
<p><span><img src="webkit-fake-url://9B96EEF3-E9D8-4E82-8DA5-88ADA19BF99C/image.tiff" alt=""></span></p>
<p><span>点击进入TuYaPRO工程：</span></p>
<p>&nbsp;<img src="webkit-fake-url://F9A1CDA9-375B-49C9-97A8-8869ACC1577F/image.tiff" alt=""></p>
<p><span><strong>1.3.2&nbsp;commit更改</strong></span></p>
<p><span>下方有问号的就是我们的工程文件，现在我们将他们添加到Git仓库内。全选他们，点击Commit键。</span></p>
<p><span>Commit成功后，出现一条记录和描述。</span></p>
<p>&nbsp;<img src="webkit-fake-url://3D5A6A5F-B64E-4A17-89FB-DCAC649FEE05/image.tiff" alt=""></p>
<p>&nbsp;</p>
<p><span><strong>1.4&nbsp;远端仓库（remote repositories）</strong></span></p>
<p>&nbsp;</p>
<p><span><strong>1.4.1&nbsp;设置一个远端的GitHub仓库</strong></span></p>
<p>&nbsp;</p>
<p><span>我们将创建一个远端的GitHub仓库。这个仓库可以存储在本地或者是网络上。</span></p>
<p>&nbsp;</p>
<p><span>远端Git仓库和标准的Git仓库有如下差别：一个标准的Git仓库包括了源代码和历史信息记录。我们可以直接在这个基础上修改代码，因为它已经包含了一个工作副本。但是远端仓库没有包括工作副本，只包括了历史信息。</span></p>
<p>&nbsp;</p>
<p><span><strong>1.4.2&nbsp;添加远端仓库</strong></span></p>
<p><span>首先我们需要创建一个Repository;</span></p>
<p>&nbsp;<img src="webkit-fake-url://B99D9AE0-D4B6-4B39-808F-586C26B4DEE3/image.tiff" alt=""></p>
<p><span>填写工程信息：</span></p>
<p>&nbsp;<img src="webkit-fake-url://381B2A89-CC05-4E3F-AF58-2AA19F6EC68F/image.tiff" alt=""></p>
<p><span>创建完成后，Clone此工程下来，复制此工程的URL：</span></p>
<p>&nbsp;<img src="webkit-fake-url://98922CF5-63F4-4286-A390-1FC2A71DD7D4/image.tiff" alt="">&nbsp;</p>
<p><span>在SourceTree中Clone Repository。</span></p>
<p><span><img src="webkit-fake-url://6D63622A-2FEF-40C5-AE15-1C6A3B67B7B3/image.tiff" alt=""></span></p>
<p><img src="webkit-fake-url://B231F988-E6A0-442E-998C-A77B512FE840/image.tiff" alt=""></p>
<p><span>将原来的工程文件拖入TuYaPRO目录中。</span></p>
<p><img src="webkit-fake-url://2B49FFFF-6278-437C-897B-DDA9F9224C8D/image.tiff" alt=""></p>
<p><span>全选下面的工程文件，点击commit提交到本地仓库。</span></p>
<p>&nbsp;<img src="webkit-fake-url://5B63F70D-7AA9-4D23-87FE-D73163DFCA4A/image.tiff" alt=""></p>
<p><span>master中出现一个pull标记，同时多了一条记录：</span></p>
<p>&nbsp;<img src="webkit-fake-url://E72CB933-BF39-4B1C-BB84-6BD950C1484F/image.tiff" alt=""></p>
<p><span><strong>1.4.3&nbsp;推送更改到GitHub的仓库</strong></span></p>
<p><span>在下方的Origin中，显示的是GitHub服务器上的工程，它显示的进度还在第一条Initial commit;这时我们需要将本地master中的更改Push到GitHub服务器。</span></p>
<p><span><img src="webkit-fake-url://3EDC009B-E4BA-41D6-8BBB-24DBE69D5C01/image.tiff" alt=""></span></p>
<p><span>点击右上方的Push按钮。</span></p>
<p>&nbsp;<img src="webkit-fake-url://162FE251-B8FA-47E6-875C-DA74CEC6A6BA/image.tiff" alt=""></p>
<p><span>提交成功后，我们看到服务器端的进度已经和我们本地同步了。</span></p>
<p>&nbsp;<img src="webkit-fake-url://6AD108DF-F309-4E13-B305-4B0B6335C45D/image.tiff" alt=""></p>
<p><span><strong>1.4.4&nbsp;拉取（Pull）更改</strong></span></p>
<p><span>通过拉取，可以从GitHub的仓库中获取最新的更改。</span></p>
<p>&nbsp;<img src="webkit-fake-url://BF5674A0-98F6-43A2-B32B-B51E745CA2F4/image.tiff" alt=""></p>
<p><span><strong>1.4.5&nbsp;还原更改</strong></span></p>
<p><span>如果你还未把更改加入到索引中，你也可以直接还原所有的更改；也可以通过revert命令进行还原操作 。</span></p>
<p>&nbsp;<img src="webkit-fake-url://9430373C-3AA0-40F2-AD3C-1DF42701369A/image.tiff" alt=""></p>
<p><span>即使你删除了一个未添加到索引和提交的文件，你也可以还原出这个文件，点击Checkout。</span></p>
<p><span><img src="webkit-fake-url://4290AFE6-1E22-4E8D-B9F5-EB26E5F03780/image.tiff" alt=""></span></p>
<p><span>如果你已经添加一个文件到索引中，但是未提交。可以通过git resetfile 命令将这个文件从索引中删除。</span></p>
<p>&nbsp;<img src="webkit-fake-url://1BF91582-68F1-41FF-B1D6-92FED18638DA/image.tiff" alt=""></p>
<p>&nbsp;</p>
<p><span><strong>1.5&nbsp;分支、合并</strong></span></p>
<p>&nbsp;</p>
<p><span><strong>1.5.1&nbsp;分支</strong></span></p>
<p><span>通过分支，可以创造独立的代码副本。默认的分支叫master。Git消耗很少的资源就能创建分支。Git鼓励开发人员多使用分支。</span></p>
<p><span>点击Branch添加分支;</span></p>
<p><span><img src="webkit-fake-url://71DAA4FC-359E-4FDB-9A71-A7CC556B49E7/image.tiff" alt="">&nbsp; &nbsp; &nbsp; &nbsp;<img src="webkit-fake-url://007E1B0A-131E-43EA-843F-15862518A1F3/image.tiff" alt=""></span></p>
<p><span>Branches列表会出现Dev分支，我们可以在此分支开发我们负责的部分。</span></p>
<p>&nbsp;<img src="webkit-fake-url://26242A6C-EF1B-47E5-9B7D-226E4AA7086B/image.tiff" alt=""></p>
<p><span><strong>1.5.2&nbsp;合并</strong></span></p>
<p><span>通过Merge我们可以合并两个不同分支的结果。Merge通过所谓的三路合并来完成。分别来自两个分支的最新commit和两个分支的最新公共commit。</span></p>
<p><span>我们在Dev分支进行进行一些工作之后，可以看到Dev和master的进度是不一样的。</span></p>
<p><span><img src="webkit-fake-url://C0D4C6C7-6643-4B08-A953-03FD6C3FE310/image.tiff" alt=""></span></p>
<p><span>这时我们返回master分支，点击merge；</span></p>
<p><span><img src="webkit-fake-url://33F52041-539E-4B1D-A0AA-2EA83B5997F3/image.tiff" alt=""></span></p>
<p><span>合并之后我们发现，master已经和Dev同步了。</span></p>
<p><span><img src="webkit-fake-url://1BD436FC-AE55-4EC9-9635-61844CB6B3CA/image.tiff" alt=""></span></p>
<p><span>这时我们发现orgin和master并不同步，这时因为我们的更改并没有推送到在线的GitHub服务器，这时我们可以把我们的更改Push到Github上，点击Push。</span></p>
<p>&nbsp;<img src="webkit-fake-url://E44D6FFF-4549-46B2-980C-110B9D348C3B/image.tiff" alt=""></p>
<p><span>这时我们可以看到服务器和本地都同步了。</span></p>
<p><span>但是有时多人开发时，有可能会发生合并冲突。</span></p>
<p><span>一旦合并发生了冲突，Git会标志出来，开发人员需要手工的去解决这些冲突。解决冲突以后，就可以将文件添加到索引中，然后提交更改。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span><strong>1.5.3&nbsp;合并请求（pull Requests）一个分支到源仓库</strong></span></p>
<p><span>我们在Github上Fork的项目，当一个人完成开发后，需要提出一个合并请求，请求把自己写的部分与主项目合并。</span></p>
<p><span>在Github上的自己Fork的工程右边点击Pull Requests，点击New pull request。</span></p>
<p>&nbsp;<img src="webkit-fake-url://4757F9BB-D6F6-4DA2-90CC-4E8D0EE8A744/image.tiff" alt=""></p>
<p><img src="webkit-fake-url://4E9F7DC4-7A54-4384-ADD4-94CBE68B59AD/image.tiff" alt=""></p>
<p><span>这里会比较你和主项目的不同，然后点击创建pull request。</span></p>
<p><span><img src="webkit-fake-url://E2F35A47-0430-411B-879B-F66C57556C6D/image.tiff" alt=""></span></p>
<p><span>这里写入你要合并部分的介绍，完成了什么功能等等，点击发送。</span></p>
<p><span><img src="webkit-fake-url://2C8570F0-027C-47B6-8745-D8E870F844E3/image.tiff" alt=""></span></p>
<p><span>项目拥有者收到你的请求，根据你完成的功能，和你沟通后可以选择合并或者否决你的请求。</span></p>
<p><span>合并需要手工完成，具体请向度娘了解。</span></p>
<p><span><strong>1.6&nbsp;解决合并冲突</strong></span></p>
<p>&nbsp;</p>
<p><span>如果两个不同的开发人员对同一个文件进行了修改，那么合并冲突就会发生。而Git没有智能到自动解决合并两个修改。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span><strong>1.7&nbsp;链接和文章</strong></span></p>
<p><span>1.<a href="http://download.csdn.net/detail/tangbin330/5625037" target="_blank" rel="external"><span>Git相关学习资源</span></a></span></p>
<p><span>Github&nbsp; <a href="http://www.github.com" target="_blank" rel="external"><span>www.github.com</span></a></span></p>
<p><span>SourceTree出的Git教程：<a href="http://www.atlassian.com/git" target="_blank" rel="external"><span>www.atlassian.com/git</span></a></span></p>
<p><span>某个台湾人写的Git教程：<a href="http://pan.baidu.com/s/1eQBUIe2" target="_blank" rel="external"><span>http://pan.baidu.com/s/1eQBUIe2</span></a></span></p>
<p><span>一些GitHub资料：<a href="http://pan.baidu.com/s/1qW8m5fY" target="_blank" rel="external"><span>http://pan.baidu.com/s/1qW8m5fY</span></a></span></p>
<p><span>吴丽和王帅帅拍的片儿：</span></p>
<p><span><a href="http://pan.baidu.com/share/link?shareid=422160084&amp;uk=2922146712" target="_blank" rel="external">http://pan.baidu.com/share/link?shareid=422160084&amp;uk=2922146712</a></span></p>
<p><span><a href="http://pan.baidu.com/s/128WT3" target="_blank" rel="external">http://pan.baidu.com/s/128WT3</a></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>Author: Duger.Wang&lt;<a href="mailto:wfyh007@gmail.com" target="_blank" rel="external"><span>wfyh007@gmail.com</span></a>&gt;</span></p>
<p><span>Date:2013年12月29日 星期日</span></p>
<p><span>Github:&lt;<a href="http://github.com/duger" target="_blank" rel="external"><span>github.com/duger</span></a>&gt;</span></p>
<p><span>&nbsp;</span><br><img src="http://counter.cnblogs.com/blog/rss/3496495" alt=""></p>
<p>本文链接：<a href="http://www.cnblogs.com/duger/p/3496495.html" target="_blank" rel="external">使用SourceTree和GitHub共同开发</a>，转载请注明。</p>

    
  </div>
  <footer>
    
      
  <div class="categories">
    <a class="categories-link" href="/categories/技术/">技术</a>, <a class="categories-link" href="/categories/技术/Git/">Git</a>
  </div>

      
  <div class="tags">
    <a class="tags-link" href="/tags/Git/">Git</a>, <a class="tags-link" href="/tags/GitHub/">GitHub</a>, <a class="tags-link" href="/tags/SourceTree/">SourceTree</a>
  </div>

    
    <div class="clearfix"></div>
  </footer>
</article>


<section id="comment">
  <h1 class="title">评论</h1>
  <div class="ds-thread" data-title="使用SourceTree和GitHub共同开发 - duger">
  </div>
</section>
</div>
  </div>
  <div class="widget-wrapper">
    <aside id="sidebar">
  
  
    
      
      

<div class="widget tag first">
  <h3 class="title">categories</h3>
  <ul class="entry">
  
    <li><a href="/categories/技术/C/">C</a><small>1</small></li>
  
    <li><a href="/categories/技术/Git/">Git</a><small>2</small></li>
  
    <li><a href="/categories/技术/Hexo/">Hexo</a><small>1</small></li>
  
    <li><a href="/categories/技术/iOS/">iOS</a><small>8</small></li>
  
    <li><a href="/categories/只言片语/">只言片语</a><small>2</small></li>
  
    <li><a href="/categories/技术/">技术</a><small>17</small></li>
  
    <li><a href="/categories/随笔/">随笔</a><small>1</small></li>
  
  </ul>
</div>

    
      
      

<div class="widget tagcloud">
  <h3 class="title">标签云</h3>
  <div class="entry">
    <a href="/tags/Apache/" style="font-size: 10.00px;">Apache</a><a href="/tags/C/" style="font-size: 10.00px;">C</a><a href="/tags/Certificates/" style="font-size: 10.00px;">Certificates</a><a href="/tags/ContOS/" style="font-size: 10.00px;">ContOS</a><a href="/tags/Git/" style="font-size: 10.00px;">Git</a><a href="/tags/GitHub/" style="font-size: 10.00px;">GitHub</a><a href="/tags/Google字体/" style="font-size: 10.00px;">Google字体</a><a href="/tags/Jekyll/" style="font-size: 10.00px;">Jekyll</a><a href="/tags/LAMP/" style="font-size: 15.00px;">LAMP</a><a href="/tags/Mac/" style="font-size: 10.00px;">Mac</a><a href="/tags/NSDictionary/" style="font-size: 10.00px;">NSDictionary</a><a href="/tags/NSString/" style="font-size: 10.00px;">NSString</a><a href="/tags/Phabricator/" style="font-size: 10.00px;">Phabricator</a><a href="/tags/Profiles/" style="font-size: 10.00px;">Profiles</a><a href="/tags/SourceTree/" style="font-size: 15.00px;">SourceTree</a><a href="/tags/XCode/" style="font-size: 10.00px;">XCode</a><a href="/tags/Xcode/" style="font-size: 10.00px;">Xcode</a><a href="/tags/code-review/" style="font-size: 10.00px;">code review</a><a href="/tags/delegate/" style="font-size: 10.00px;">delegate</a><a href="/tags/iOS/" style="font-size: 20.00px;">iOS</a><a href="/tags/jekyll/" style="font-size: 10.00px;">jekyll</a><a href="/tags/nil/" style="font-size: 10.00px;">nil</a><a href="/tags/setter/" style="font-size: 10.00px;">setter</a><a href="/tags/人生/" style="font-size: 10.00px;">人生</a><a href="/tags/博客/" style="font-size: 10.00px;">博客</a><a href="/tags/春天/" style="font-size: 10.00px;">春天</a><a href="/tags/苹果证书/" style="font-size: 10.00px;">苹果证书</a>
  </div>
</div>

    
      
      

<div class="widget recent-posts">
  <h3 class="title">最近的文章</h3>
  <ul class="entry">
    
      <li>
        <a href="/2015/08/17/SourceTree中使用BeyondCompare作为默认对比工具.html">SourceTree中使用BeyondCompare作为默认对比工具</a>
      </li>
    
      <li>
        <a href="/2014/09/09/Hexo加载过慢.html">HEXO个人博客速度优化</a>
      </li>
    
      <li>
        <a href="/2014/08/01/hello-world.html">Hello World</a>
      </li>
    
      <li>
        <a href="/2014/04/26/setup-phabricator-on-aliyun.html">在CentOS上搭建Phabricator</a>
      </li>
    
      <li>
        <a href="/2014/04/04/beauly-fade-love-stay.html">Beauly fade Love stay</a>
      </li>
    
  </ul>
</div>

    
  
</aside>
<div class="clearfix"></div>
  </div>
  <footer id="footer"><div class="copyright">
  
  &copy; 2015 <a href="/">Duger wang</a>
  
</div>
<div class="theme-copyright">
  Theme by <a href="https://github.com/orderedlist" target="_blank">orderedlist</a>
   | 
  Redesign by <a href="http://heroicyang.com/" target="_blank">Heroic Yang</a>
</div>
<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<span id="busuanzi_container_site_pv">
	本站总访问量<span id="busuanzi_value_site_pv" style="color:white"></span>次
</span>
<div class="clearfix"></div></footer>
  <script src="//ajax.useso.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script src="/js/scale.fix.js"></script>
<script src="/js/jquery.imagesloaded.min.js"></script>
<script src="/js/gallery.js"></script>


<script type="text/javascript">
  var duoshuoQuery = { short_name: 'duger' };
  (function() {
    var ds = document.createElement('script');
    ds.type = 'text/javascript';
    ds.async = true;
    ds.src = 'http://static.duoshuo.com/embed.js';
    ds.charset = 'UTF-8';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds);
  })();
</script>



<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
  (function($){
    $('.fancybox').fancybox();
  })(jQuery);
</script>

</body>
</html>